package com.tuling.multidatasource.dynamicdatasource;

/**
 * @Author: lijunwei
 * @Time: 2020/9/12 15:43
 */
public class MultiDataSourceHolder {
    /**
     *  设置动态选择的Datasource，这里的Set方法可以留给AOP调用，
     *  或者留给我们的具体的Dao层或者Service层中手动调用，在执行SQL语句之前。
     */

    private static final ThreadLocal<String> dataSourceHolder = new ThreadLocal<>();
    private static final ThreadLocal<String> tableIndexHolder = new ThreadLocal<>();

    /**
     * 保存数据源的key
     * @param dsKey
     */
    public static void setDataSourceHolder(String dsKey){
        dataSourceHolder.set(dsKey);
    }

    /**
     * 从threadLocal中取出key
     * @return
     */
    public static String getDataSourceKey(){
        return dataSourceHolder.get();
    }

    /**
     * 清除key
     */
    public static void clearDataSourceKey(){
        dataSourceHolder.remove();
    }

    /**
     * 保存表索引
     * @param tableIndex
     */
    public static void setTableIndexHolder(String tableIndex){
        tableIndexHolder.set(tableIndex);
    }

    /**
     * 从threadLocal中取出索引
     * @return
     */
    public static String getTableIndex(){
        return tableIndexHolder.get();
    }

    /**
     * 清除表索引
     */
    public static void clearTableIndex(){
        tableIndexHolder.remove();
    }
}
